.TH std::ranges::join_view::iterator::satisfy 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::ranges::join_view::iterator::satisfy \- std::ranges::join_view::iterator::satisfy

.SH Synopsis
   constexpr void satisfy();  \fI(since C++20)\fP
                              (exposition only*)

   Skips over empty inner ranges and initializes the underlying iterator inner_.

   Let the constant /*ref-is-glvalue*/ be
   std::is_reference_v<ranges::range_reference_t<Base>>.

   The function body is equivalent to

 auto update_inner = [this](const ranges::iterator_t<Base>& x) -> auto&&
 {
     if constexpr (/*ref-is-glvalue*/)     // *x is a reference
         return *x;
     else
         return parent_->inner_./*emplace-deref*/(x);
 };

 for (; outer_ != ranges::end(parent_->base_); ++outer_)
 {
     auto&& inner = update_inner(outer_);
     inner_ = ranges::begin(inner);
     if (inner_ != ranges::end(inner))
         return;
 }

 if constexpr (/*ref-is-glvalue*/)
     inner_ = InnerIter();

.SH Parameters

   \fI(none)\fP

.SH Return value

   \fI(none)\fP
